Библиотека graphABC
подключается стандартным способом с помощью директивы uses в разделе описаний программ:
uses graphABC;
В графическом
режиме, который в современных операционных системах типа Windows является основным, экран представляет собой матрицу
точек (пикселов), причем имеется
возможность высветить любой пиксел любым цветом. Координаты каждого пиксела
определяются парой целых чисел:
– координата
x -- номер пиксела в строке. Нумерация выполняется слева направо, начиная с 0;
– координата
y -- номер строки пикселов. Нумерация строк производится сверху вниз, начиная с
0.
Таким образом,
координаты левого верхнего угла экрана равны (0, 0).
Любой объект, высвечиваемый на экране, является
совокупностью отдельных пикселов. Количество воспроизводимых пикселов по горизонтали и вертикали зависит
от типа монитора и установленного графического
режима. Каждый монитор может использовать множество режимов, отличающихся
количеством поддерживаемых цветов и разрешением графического экрана в пикселах.
Рассмотрим основные стандартные процедуры и функции
модуля graph.
close;
— процедура без параметров, завершает работу в
графическом режиме. Следует выполнять эту процедуру перед завершением любой
графической программы на Паскале.
clear;
— процедура без параметров, очищает экран. При
переходе в графический режим экран очищается автоматически, так что перед
началом вывода эта операция не требуется.
— procedure
Circle(x,y,r: integer); Рисует заполненную окружность с
центром (x,y) и радиусом r;
— procedure
Arc(x,y,r,a1,a2: integer); Рисует
дугу окружности с центром в точке (x,y) и радиусом r,
заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 –
вещественные, задаются в градусах и отсчитываются против часовой стрелки)
— procedure
LineTo(x,y: integer); Рисует отрезок от текущей позиции
до точки (x,y). Текущая позиция переносится в точку (x,y);
— procedure
MoveTo(x,y: integer); Устанавливает текущую позицию
рисования в точку (x,y);
— procedure
Line(x1,y1,x2,y2: integer);
Рисует отрезок от точки (x1,y1) до точки (x2,y2);
— procedure
FillCircle(x,y,r: integer); Заполняет внутренность окружности с
центром (x,y) и радиусом r;
— procedure
DrawCircle(x,y,r: integer); Рисует окружность с центром (x,y) и радиусом r;
— procedure
TextOut(x,y: integer; s: string); Выводит
строку s в прямоугольник к координатами левого
верхнего угла (x,y);
— procedure TextOut(x,y:
integer; n: integer); Выводит
целое n в прямоугольник к
координатами левого верхнего угла (x,y);
— procedure
TextOut(x,y: integer; r: real); Выводит
вещественное r в прямоугольник к координатами левого
верхнего угла (x,y);
— procedure DrawTextCentered(x,y,x1,y1:
integer; s: string); Выводит
строку s, отцентрированную в прямоугольнике с координатами (x,y,x1,y1);
— procedure DrawTextCentered(x,y,x1,y1:
integer; r: real);
Выводит вещественное значение r, отцентрированное в прямоугольнике с координатами (x,y,x1,y1);
— function
PenX: integer; Возвращают
x-координату текущей позиции рисования;
— function
PenY: integer; Возвращают
y-координату текущей позиции рисования;
Следующая процедура определяет стиль рисования линий:
Объект текущего пера возвращается функцией Pen и имеет
тип GraphABCPen:
function Pen: GraphABCPen;
Класс GraphABCPen
имеет следующий интерфейс:
type
GraphABCPen
= class
property NETPen: System.Drawing.Pen;
property
Color: GraphABC.Color;
property
Width: integer;
property
Style: DashStyle;
property Mode:
integer;
property X:
integer;
property Y:
integer;
end;
Свойства класса GraphABCPen
описаны в следующей таблице:
|
|
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
Стили пера
Стили пера задаются перечислимым типом
|
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
|
Пример.
Pen.Color := clRed;
Pen.Style
:= psDot;
В библиотеке graph нет
процедур для вывода численных данных. Для этого необходимо сначала
преобразовать число в строку с помощью процедуры str,
а затем посредством операции '+' подключить строку к сообщению, выводимому
процедурой textout. Например:
uses graphABC;
var max,u,rad,y2,x2:real;smax:string;
begin
max:=34.56; {Число}
str(max:6:2,smax);
{Преобразование числа max
в строку smax}
textout(400,40,'Максимум=' + smax);
{Вывод строки smax с
комментарием}
end.
Узнать ширину и высоту строки в пикселах можно с
помощью стандартных функций function textwidth (s: string):word; и function textheight (s: string):word;
соответственно.
Приведем пример программы, реализующeй типовые графические построения.
1. Реализация процедуры, выводящей строку текста в
центр прямоугольного окна на экране.
var cx,cy,r:integer;
begin
Rectangle
(x1,y1,x2,y2); {Рамка}
rectangle
(x1+2,y1+2,x2-2,y2-2);
cx:=(x1+ x2) div 2; {Координаты}
cy:=(y1+ y2) div 2; {центра}
TextOut (cx,cy,str);
{Вывод
строки}
end;
{ Обращение к данной процедуре: }
begin
Circle(50,50,15);
Arc(50,50,20,0,45);
Line(PenX,penY,350,350);
outstring (100, 100, 200, 200, 'Hello!');
end.